package jm.nj.demo09mian.demo01;

import jm.nj.demo04mian.demo13.Outer;

import java.util.HashMap;
import java.util.Map;

/*
 * java.util.HasMap<K,V>接口:双列集合
 *
 * Map集合的特点:
 *       1.Map集合中的键不能重复
 *       2.Map集合中一个键只能对应一个值
 *       3.Map集合中的值可以重复
 *       4.键和值的数据类型可以相同,也可以不同
 * */
public class Demo01Map {
    public static void main(String[] args) {
        //method_01();
        //method_02();
        method_03();
    }

    /*
     *  根据值定的键,删除指定的键值对,返回被移除之前的值
     * V remove (Object key)
     * 如果集合中没有这个键,返回null
     * */
    private static void method_03() {
        Map<String,String> map = new HashMap<String, String>();
        map.put("a","1");
        map.put("b","2");
        map.put("c","3");
        map.put("d","4");

        System.out.println(map);
        String v1 = map.remove("c");
        System.out.println("v1:"+v1);
        System.out.println(map);

        String v2 = map.remove("w");
        System.out.println("v2:"+v2);
        System.out.println(map);
    }

    /*
     * 通过键值,获取值对象
     * V get (Object key)
     * 如果集合中没有,返回null
     * */
    private static void method_02() {
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "a");
        map.put(8, "b");
        map.put(4, "c");
        map.put(2, "a");

        String v1 = map.get(8);
        System.out.println("v1:" + v1);

        String v2 = map.get(10);
        System.out.println("v2:" + v2);
    }

    /*
     * 将键值对存储到集合中
     * V put (K Key,V value)  K作为键对象 V 作为值对象
     * 存储的是重复的键,将原有的值覆盖
     * 返回值一般返回的是null,存储重复的键的时候,返回被覆盖之前的值
     * */
    private static void method_01() {
        //多态
        Map<String, Integer> map = new HashMap<String, Integer>();
        Integer value1 = map.put("a", 1);
        System.out.println("value1:" + value1);
        map.put("b", 2);
        map.put("c", 2);
        Integer value2 = map.put("b", 3);
        System.out.println("value2:" + value2);

        System.out.println(map);
    }

}
